package main

import (
	"fmt"
	"sync"
)

type Db struct {
	Dsn string
}

var db *Db
var once sync.Once

func GetDb() *Db {
	//线程安全
	once.Do(func() {
		if db == nil {
			db = &Db{"sdsd"}
		}
	})
	return db
}
func InitDb(dsn string) *Db {
	return &Db{dsn}
}

// 创建者模式  隐藏创建细节
func main() {
	DBb := InitDb("test")
	fmt.Println(DBb.Dsn)
}
